package com.mastercard.assets.web.struts.forms ;

import java.io.Serializable;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

import com.mastercard.assets.MasterCardException;
import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblCuentaPaquete;
import com.mastercard.assets.jpa.TblDomestic;
import com.mastercard.assets.jpa.TblPaises;
import com.mastercard.assets.jpa.TblProducto;
import com.mastercard.assets.jpa.TblTipoCampania;
import com.mastercard.assets.jpa.TblTipoProducto;
import com.mastercard.assets.jpa.TblUsuario;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.util.to.AssetPaqueteWraper;
import com.mastercard.assets.web.util.to.BasicToolTO;
import com.mastercard.assets.web.util.to.CampaniaProductoAdq;
import com.mastercard.assets.web.util.to.CampaniaProductoAdqWraper;
import com.mastercard.assets.web.util.to.CampaniaProductoWraper;
import com.mastercard.assets.web.util.to.UserLogin;
import javax.servlet.http.HttpSession;

public class GenerarCampanaRegistrarForm
	extends
		ActionForm
	implements
		Serializable
{
	private List< CampaniaProductoWraper > cpw = new ArrayList< CampaniaProductoWraper >( ) ;
	private List< CampaniaProductoAdqWraper > cpaw = new ArrayList< CampaniaProductoAdqWraper >( ) ;
	
	private String nombre ;
	private int tipoCampania ;
	private boolean multiplePartner ;
        private boolean autCountryM ;
	private int[ ] producto ;
	private int[ ] tipoProducto ;
	private String fechaIni ;
	private String fechaFin ;
	private int[] fechaIniA ;
        private int[] fechaFinA ;
//        private String[] fechaFinAsset = new String[30];
//        private String[] fIa = new String[30];
        private String[] duraCamp = new String[20] ;
        private boolean estrategica ;
        private int tfIni ;
        private String maxFecIniAss ;
        private int encargado ;
	private String texto ;
        private int userInCharge ;
	private String nombreUsuario ;
	private String correoUsuario ;
	private String login ;
	private String password ;
	private TblUsuario newUser ;
	private int cveCuenta ;
	private Timestamp fechaIniT ;
	private Timestamp fechaFinT ;
	private int level ;
	private int dcInt = 0 ;
        private int duCa ;
        private List< TblDomestic > tblDomestic;
        private float ctp ;
        private String comentarios ;
        private java.math.BigDecimal roi ;
        private java.math.BigDecimal gdv ;
        private List<CampaniaProductoAdq> campaniaProductoAdq ;
        private int totalTN ;
        private java.math.BigDecimal revT ;
        private String inversion ;
        private String proposito ;
	private List< BasicToolTO > lBT = new ArrayList< BasicToolTO >( ) ;
	private int cardsCampain ;
        
        
        public int getDcInt() {
		return dcInt;
	}

	public int[] getTipoProducto() {
		return tipoProducto;
	}

	public void setTipoProducto(int[] tipoProducto) {
		this.tipoProducto = tipoProducto;
	}

	public String getFechaIniF() {
		if( fechaIni == null || fechaIni.length( ) != 10 )
			return "" ;
		
		String[ ] tokens = fechaIni.split( "/" ) ;
		
		if( tokens.length != 3 )
			return "" ;
		
		return tokens[ 2 ] + "-" + tokens[ 1 ] + "-" + tokens[ 0 ] ;
	}

	public String getFechaFinF() {
		if( fechaFin == null || fechaFin.length( ) != 10 )
			return "" ;
		
		String[ ] tokens = fechaFin.split( "/" ) ;
		
		if( tokens.length != 3 )
			return "" ;
		
		return tokens[ 2 ] + "-" + tokens[ 1 ] + "-" + tokens[ 0 ] ;
	}

	public int getLevel() {
		return level;
	}

	public void setLevel(int level) {
		this.level = level;
	}

	public Timestamp getFechaIniT() {
		return fechaIniT;
	}

	public Timestamp getFechaFinT() {
		return fechaFinT;
	}
	
	public int getCveCuenta() {
		return cveCuenta;
	}

	public void setCveCuenta(int cveCuenta) {
		this.cveCuenta = cveCuenta;
	}

	public TblUsuario getNewUser() {
		return newUser;
	}

	private int operation ;

	private int[ ] packageCountId ;
	
	private List< TblCuentaPaquete > paquetesParaCampana = new ArrayList< TblCuentaPaquete >( ) ;

	public int getOperation() {
		return operation;
	}

	public void setOperation(int operation) {
		this.operation = operation;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public int getTipoCampania() {
		return tipoCampania;
	}

	public void setTipoCampania(int tipoCampania) {
		this.tipoCampania = tipoCampania;
	}

	public boolean getMultiplePartner() {
		return multiplePartner;
	}

	public void setMultiplePartner(boolean multiplePartner) {
		this.multiplePartner = multiplePartner;
	}

        public boolean getAutCountryM() {
		return autCountryM;
	}

	public void setAutCountryM(boolean autCountryM) {
		this.autCountryM = autCountryM;
	}

	public int[ ] getProducto() {
		return producto;
	}

	public void setProducto(int[ ] producto) {
		this.producto = producto;
	}

	public String getFechaIni() {
		return fechaIni;
	}

	public void setFechaIni(String fechaIni) {
		this.fechaIni = fechaIni;
	}

	public String getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public int getUserInCharge() {
		return userInCharge;
	}

	public void setUserInCharge(int userInCharge) {
		this.userInCharge = userInCharge;
	}

	public String getNombreUsuario() {
		return nombreUsuario;
	}

	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}

	public String getCorreoUsuario() {
		return correoUsuario;
	}

	public void setCorreoUsuario(String correoUsuario) {
		this.correoUsuario = correoUsuario;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int[] getPackageCountId() {
		return packageCountId;
	}

	public void setPackageCountId(int[] packageCountId) {
		this.packageCountId = packageCountId;
	}

	public List<TblCuentaPaquete> getPaquetesParaCampana() {
		return paquetesParaCampana;
	}

	public void setPaquetesParaCampana(List< TblCuentaPaquete > paquetesParaCampana) {
		this.paquetesParaCampana = paquetesParaCampana;
	}

	public ActionErrors validate( ActionMapping mapping , HttpServletRequest request )
	{
    		ActionErrors errors = new ActionErrors( ) ;
		
		System.out.println( "operation " + operation ) ;
		
		if( operation == 2 || operation == 3 )
			return errors ;
		
		// revisa todos los posibles errores
		// nombre campania
		if( nombre == null || nombre.trim( ).length( ) == 0 )
			errors.add( "EmptyNombre" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.EmptyNombre" ) ) ;
		
		// en caso de que no haya elegido tipo de campania
		if( tipoCampania == 0 )
			errors.add( "EmptyTipoCampana" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.EmptyTipoCampana" ) ) ;
		
		// revisa fecha de inicio
                
		if( fechaIni == null || fechaIni.trim( ).length( ) != 10 )
			errors.add( "WrongIniDate" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.WrongIniDate" ) ) ;
                
		// revisa fecha de fin
		if( fechaFin == null || fechaFin.trim( ).length( ) != 10 )
			errors.add( "WrongFinDate" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.WrongFinDate" ) ) ;
                	
		// revisa fecha de fin
		if( texto == null )
			texto = "" ;
		
		// en caso de uqe no haya encargado
		if( encargado == 1 )
		{
			// revisa los datos a ingresar de nombre, mail, login y password
			if( nombreUsuario == null || nombreUsuario.trim( ).length( ) == 0 )
				errors.add( "EmptyNombreUsuario" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.EmptyNombreUsuario" ) ) ;
			
			// en caso de que no haya errores
			if( errors.size( ) == 0 )
			{
				// revisa el password. En caso d eque este vacia
				if( password == null || password.trim( ).length( ) == 0 )
					errors.add( "EmptyPaswdUsuario" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.EmptyPaswdUsuario" ) ) ;
				// en caso de que el password no este vacia
				else
				{
					// revisa niveles
					if( level < 1 )
						errors.add( "EmptyLevel" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.EmptyLevel" ) ) ;
					// en caso de que si haya nivel
					else
					{
						// revisa login del usuario. En caso de vacio
						if( login == null || login.trim( ).length( ) == 0 )
							errors.add( "EmptyLoginUsuario" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.EmptyLoginUsuario" ) ) ;
						// en caos de que no sea vacio y no haya errores anteriores
						else if( errors.size( ) == 0 )
						{
							// averigua si el login de este usuario ya existe
							TblUsuario l = MasterCardDAO.findUserByLogin( login ) ;
							
							// en caso de que ya exista el usuario
							if( l != null )
								errors.add( "LoginUsuarioAlreadyExist" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.LoginUsuarioAlreadyExist" , login ) ) ;
							// en caso d eque no exist
							else
							{
								// agrega el usuario
								try
								{
                                                                    HttpSession session = request.getSession( ) ;
                                                                    UserLogin ul = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
                                                                    TblPaises tblPais = ul.getTblUsuario( ).getTblPais( ) ;
									boolean res = MasterCardDAO.addNewUser( login , correoUsuario , nombreUsuario , password , new int[ ]{ 3 } , new int[ ]{ level } , new int[ ]{ this.cveCuenta }, tblPais ) ;
									
									// en caos de que si se agrega
									if( res )
									{
										newUser = MasterCardDAO.findUserByLogin( login ) ;
                                                                                encargado = 0 ;
									}
								}catch( MasterCardException e )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									errors.add( "ErrorOnAddUser" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ErrorOnAddUser" , login , e.getSingularMessage( ) ) ) ;
								}catch( Exception e )
								{
                                                                    MasterCardDAO.closeEntityManager( ) ;
									errors.add( "ErrorOnAddUser" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ErrorOnAddUser" , login , e.getMessage( ) ) ) ;
								}
							}
						}
					}// finaliza el else de revision de niveles					
				}
			}// termina if de errors.size == 0
		}
		// en caos de que si haya encargado
		else
		{
			// busca el usuario
                    if ( userInCharge != 0 ){
			newUser = MasterCardDAO.findUserById( userInCharge ) ;
                    }
                    else
                        errors.add( "NoUserInCharge" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.NoUserInCharge" ) ) ;
                    
		}
		
		// en caso de que sea newUser null
		if( newUser == null )
			errors.add( "NoUserInCharge" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.NoUserInCharge" ) ) ;
                
		// si no hay errores
//		if ( operation == 4 ) {
//                            
//                            // en caso de que no haya productos
//			if( producto == null || producto.length == 0 )
//				errors.add( "ProductoEmpty" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductoEmpty" ) ) ;
//                                               
//                        // en caso de que no haya productos
//			if( tipoProducto == null || tipoProducto.length == 0 )
//				errors.add( "ProductoEmpty" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductoEmpty" ) ) ;
//                        
//                        }else{
                
                if( errors.size( ) == 0 )
		{
			// separa por tokens                    
			String[ ] tokens = fechaFin.split( "/" ) ;
			
			// crea el timestamp
			try
			{
				// convierte los valores
				int year = Integer.parseInt( tokens[ 2 ] ) ;
				int month = Integer.parseInt( tokens[ 1 ] ) ;
				int dayOfMonth = Integer.parseInt( tokens[ 0 ] ) ;
				GregorianCalendar c = new GregorianCalendar( year , month - 1 , dayOfMonth ) ;
				fechaFinT = new Timestamp( c.getTimeInMillis( ) ) ;
				
			}catch( Exception e )
			{
				errors.add( "WrongIniDate" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.WrongIniDate" ) ) ;
			}
			
			// separa por tokens
			tokens = fechaIni.split( "/" ) ;
			
			// crea el timestamp
			try
			{
				// convierte los valores
				int year = Integer.parseInt( tokens[ 2 ] ) ;
				int month = Integer.parseInt( tokens[ 1 ] ) ;
				int dayOfMonth = Integer.parseInt( tokens[ 0 ] ) ;
				GregorianCalendar c = new GregorianCalendar( year , month - 1 , dayOfMonth ) ;
				fechaIniT = new Timestamp( c.getTimeInMillis( ) ) ;
			}catch( Exception e )
			{
				errors.add( "WrongIniDate" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.WrongIniDate" ) ) ;
			}
			
			if ( operation == 4 ) {
                            
                            // en caso de que no haya productos
			if( producto == null || producto.length == 0 )
				errors.add( "ProductoEmpty" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductoEmpty" ) ) ;
                                               
                        
                        
                        }else{
                        
                        // verifica que la fecha de fin de campania sea menor a la del asset
			long finCampaniaMillis = this.fechaFinT.getTime( ) ;
			
			long finCampaniaAssetMillis = Long.MAX_VALUE ;
			Date finCampaniaAssetDate = null ;
			// toma los packageCountId y los recorre
			for( int i : packageCountId )
			{
				// extrae el packageCount
				TblCuentaPaquete tcp = MasterCardDAO.findTblCuentaPaqueteById( i ) ;
				
				// en caso de que no sea null
				if( tcp != null )
				{
					// toma el asset
					TblAsset asset = tcp.getTblPaquete( ).getTblAsset( ) ;
					
					if( asset == null )
						continue ;
					
					// toma la fecha de fin de campania
					Date finCampania = asset.getFecFinCamp( ) ;
					
					// en caso d que sea null, el valor queda en el maximo
					if( finCampania == null )
						continue ;
					
					// toma los milisegundos
					long finCampaniaAsset = finCampania.getTime( ) ;
					// en caso de que sea mayor lo sustituye
					if( finCampaniaAssetMillis < finCampaniaAsset )
					{
						finCampaniaAssetMillis = finCampaniaAsset ;
						finCampaniaAssetDate = finCampania ;
					}
				}
			}
			
			// al final compara, en caso de que sea mayor
			if( finCampaniaMillis > finCampaniaAssetMillis )
				// lanza error
				errors.add( "FechaFinWrong" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.FechaFinWrong" , fechaFinT , finCampaniaAssetDate ) ) ;
			
                        
                        // revisa los productos
			
			// en caso de que no haya productos
			if( producto == null || producto.length == 0 )
				errors.add( "ProductoEmpty" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductoEmpty" ) ) ;
			// en caso de que si haya producto
			else
			{
				// verifica si existe el tipo de producto
				TblTipoCampania tblTipoCampania = MasterCardDAO.findCampaignTypeById( tipoCampania ) ;
				
				// en caso de no null y que el nombre sea Uso
				if( ( tblTipoCampania != null && tblTipoCampania.getNombre( ).equalsIgnoreCase( "Uso" ) ) ||
                                        ( tblTipoCampania != null && tblTipoCampania.getNombre( ).equalsIgnoreCase( "Retencion" ) ) ||
                                        ( tblTipoCampania != null && tblTipoCampania.getNombre( ).equalsIgnoreCase( "Activacion" ) ) )
				{
					//String dc = request.getParameter( "DC" ) ;
					this.cpw.clear( ) ;
					// intenta convertir el dc en numero
					try
					{
						//setDcInt(Integer.parseInt( dc )) ;
                                            setDcInt(duCa) ;
					}catch( Exception e )
					{
						// en caso de que no se pueda manda un error
						errors.add( "ProductoEmpty" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.DCProductWrong" ) ) ;
						
						// regresa errores
						return errors ;
					}
					
					// recorre los productos elegidos
					for( int prod : producto )
					{
						// en caso de que sea 0 (todos los productos)
						if( prod == 0 )
						{
							// limpia el cpw
							this.cpw.clear( ) ;
							
							// toma todos los tipos de producto
							// los recorre
							for( int tipoProd : tipoProducto )
							{
								// en caso de que sea 0
								if( tipoProd == 0 )
								{
									// limpia los cpe
									this.cpw.clear( ) ;
									
									// recorre todos los productos activos
									List< TblProducto > allProducts = MasterCardDAO.getAllActiveProduct( ) ;
									
									for( TblProducto tblProduct : allProducts )
									{
										// carga los datos
										int prodI = tblProduct.getCveProducto( ) ;
										
										// carga los datos
										String cp = request.getParameter( "CP-" + prodI ) ;
										String at = request.getParameter( "AT-" + prodI ) ;
										String it = request.getParameter( "IT-" + prodI ) ;
                                                                                
										
										// en caso d que si sea correcto el numero
										// genera datos
										String[ ] rr = new String[ dcInt ] ;
										String[ ] gdvpm = new String[ dcInt ] ;
										
										// recorre todos los meses
										for( int i = 1 ; i <= dcInt ; i++ )
										{
											int index = i - 1 ;
											// toma el rr y lo coloca en el arreglo
											rr[ index ] = request.getParameter( "RR-Input-" + i + "-" + prodI ) ;
											// toma el gdvpm y lo coloca en el arreglo
											gdvpm[ index ] = request.getParameter( "RR-InputH-" + i + "-" + prodI ) ;                                                                                       
                                                                                        
										}
										
										// ya levanto los rr y los gdvpm
										// ahora carga el gdvtp
										String gdvtp = request.getParameter( "RR-InputHP-" + prodI ) ;
										
										// crea el CampaniaProductoWraper y lo agrega
										try
										{
											CampaniaProductoWraper cpWraper = new CampaniaProductoWraper( prod , cp, at, it, rr, gdvpm, gdvtp, tblProduct ) ;
											this.cpw.add( cpWraper ) ;
										}catch( Exception e )
										{
											// agrega error
											errors.add( "ProductoWraperError" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductWraperError" , e.getMessage( ) ) ) ;
										}
									}// termina el for para recorrer productos
									
								}// termina if para tipoProd = 0
								
								// e ncaso de que tipoProd no sea igual a 0
								// toma el tipoProducto
								TblTipoProducto tblTipoProduct = MasterCardDAO.findProductTypeById( tipoProd ) ;
								
								// en caso de null
								if( tblTipoProduct == null )
									continue ;
								
								// agrega datos
								// recorre todos los productos activos
								List< TblProducto > allProducts = tblTipoProduct.getTblProductos( ) ;
								
								for( TblProducto tblProduct : allProducts )
								{
									// en caso de no activo
									if( tblProduct.getStatus( ) != 1 )
										// siguiente
										continue ;
									
									// carga los datos
									int prodI = tblProduct.getCveProducto( ) ;
									
									// carga los datos
									String cp = request.getParameter( "CP-" + prodI ) ;
									String at = request.getParameter( "AT-" + prodI ) ;
									String it = request.getParameter( "IT-" + prodI ) ;
									
									// en caso d que si sea correcto el numero
									// genera datos
									String[ ] rr = new String[ dcInt ] ;
									String[ ] gdvpm = new String[ dcInt ] ;
									
									// recorre todos los meses
									for( int i = 1 ; i <= dcInt ; i++ )
									{
										int index = i - 1 ;
										// toma el rr y lo coloca en el arreglo
										rr[ index ] = request.getParameter( "RR-Input-" + i + "-" + prodI ) ;
										// toma el gdvpm y lo coloca en el arreglo
										gdvpm[ index ] = request.getParameter( "RR-InputH-" + i + "-" + prodI ) ;
									}
									
									// ya levanto los rr y los gdvpm
									// ahora carga el gdvtp
									String gdvtp = request.getParameter( "RR-InputHP-" + prodI ) ;
									
									// crea el CampaniaProductoWraper y lo agrega
									try
									{
										CampaniaProductoWraper cpWraper = new CampaniaProductoWraper( prod , cp, at, it, rr, gdvpm, gdvtp, tblProduct ) ;
										this.cpw.add( cpWraper ) ;
									}catch( Exception e )
									{
										// agrega error
										errors.add( "ProductoWraperError" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductWraperError" , e.getMessage( ) ) ) ;
									}
								}// termina el for para recorrer productos
								
							}// fin de for para recorrer tipo producto
							
							// rompe el ciclo
							break ;
						}// fin de if para producto == 0
						
						// en caso de que producto no sea igual a 0
						
						// procuto
						TblProducto tblProducto = MasterCardDAO.findProductById( prod ) ;
						
						// carga los datos
						String cp = request.getParameter( "CP-" + prod ) ;
						String at = request.getParameter( "AT-" + prod ) ;
						String it = request.getParameter( "IT-" + prod ) ;
						
						// en caso d que si sea correcto el numero
						// genera datos
						String[ ] rr = new String[ dcInt ] ;
						String[ ] gdvpm = new String[ dcInt ] ;
						
//						Enumeration< String > names = request.getParameterNames( ) ;
//						
//						while( names.hasMoreElements( ) )
//						{
//							String name = names.nextElement( ) ;
//							
//							if( name.indexOf( "GDVTotal" ) != -1 )
//								System.out.print( name + "=" + request.getParameter( name ) ) ;
//						}
						
						// recorre todos los meses
						for( int i = 1 ; i <= dcInt ; i++ )
						{
							int index = i - 1 ;
							// toma el rr y lo coloca en el arreglo
							rr[ index ] = request.getParameter( "RR-Input-" + i + "-" + prod ) ;
							// toma el gdvpm y lo coloca en el arreglo
							gdvpm[ index ] = request.getParameter( "RR-InputH-" + i + "-" + prod ) ;
//							System.out.println( "RR-Input-" + i + "-" + prod + "=" + rr[ index ] + "  --  " + "RR-InputH-" + i + "-" + prod + "=" + gdvpm[ index ] ) ;                                                        
						}
						
						// ya levanto los rr y los gdvpm
						// ahora carga el gdvtp
						String gdvtp = request.getParameter( "RR-InputHP-" + prod ) ;
						
						// crea el CampaniaProductoWraper y lo agrega
						try
						{
							CampaniaProductoWraper cpWraper = new CampaniaProductoWraper( prod , cp, at, it, rr, gdvpm, gdvtp, tblProducto ) ;
							this.cpw.add( cpWraper ) ;
						}catch( Exception e )
						{
							// agrega error
							errors.add( "ProductoWraperError" , new ActionMessage( "com.mastercard.assets.web.modules.generarcampana.errors.ProductWraperError" , e.getMessage( ) ) ) ;
						}
					}// fin del for para recorre los productos
				}// fin del if para verificar el nombre del tipo de campa;a
				// en caso de que el nombre sea Adquisicion
				else if( tblTipoCampania != null && tblTipoCampania.getNombre( ).equalsIgnoreCase( "Adquisicion" ) )
				{
					String numberOfMonthsS = request.getParameter( "numberOfMonths" ) ;
					this.cpaw.clear( ) ;
					int numberOfMonths = 0 ;
					
					try
					{
						numberOfMonths = Integer.parseInt( numberOfMonthsS ) ;
					}catch( Exception e )
					{
						
					}
					
					// verifica si esta elegido el 'todos los productos'
					boolean todosProductos = false ;
					
					// recorre los productos elegidos
					for( int prod : producto )
					{
						// en caso de que prod sea 0
						if( prod == 0 )
						{
							// quiere decir que esta elegido el 'todos los productos'
							todosProductos = true ;
							
							// rompe ciclo
							break ;
						}// termina el if para el prod == 0
						
					}// termina el for par recorrer productos
					
					// en csao e que si este elegido el todos los productos
					if( todosProductos )
					{
						// verifica si esta elegido el todos los tipos de producto
						boolean todosTiposProducto = false ;
						
						for( int tipoProd : tipoProducto )
						{
							// en caso de que sea 0
							if( tipoProd == 0 )
							{
								todosTiposProducto = true ;
								
								break ;
							}
						}
						
						// productos elegidos
						Set< TblProducto > productosElegidos = new HashSet< TblProducto >( ) ;
						
						// en caso de que este elegido
						if( todosTiposProducto )
						{
							// toma todos los tipos de productos
							List< TblTipoProducto > todosTiposProductos = new ArrayList< TblTipoProducto >( ) ;
							
							try
							{
								todosTiposProductos = MasterCardDAO.getAllActiveProductTypes( ) ;
							}catch( Exception e )
							{
								
							}
							
							// recorre
							for( TblTipoProducto ttp : todosTiposProductos )
							{
								// toma los tipos de producto activos
								List< TblProducto > tps = ttp.getTblProductos( ) ;
								
								// recorre
								for( TblProducto tpInd : tps )
								{
									// en csao de activo
									if( tpInd.getStatus( ) == 1 )
										// agrega
										productosElegidos.add( tpInd ) ;
								}
							}
						}
						// en caso e que no este elegido
						else
						{
							// recorre los tipoProducto
							for( int tipoProd : tipoProducto )
							{
								// toma el tipo de producto
								TblTipoProducto ttp = MasterCardDAO.findProductTypeById( tipoProd ) ;
								
								if( ttp == null )
									// siguiente
									continue ;
								
								// toma los tipos de producto activos
								List< TblProducto > tps = ttp.getTblProductos( ) ;
								
								// recorre
								for( TblProducto tpInd : tps )
								{
									// en csao de activo
									if( tpInd.getStatus( ) == 1 )
										// agrega
										productosElegidos.add( tpInd ) ;
								}
								
							}
						}
						
						// productos elegidos, los recorre
						for( TblProducto prodElegido : productosElegidos )
						{
							// por cada producto llena un CampaniaProductoAdqWraper
							CampaniaProductoAdqWraper adqw = new CampaniaProductoAdqWraper( numberOfMonths , prodElegido.getCveProducto( ) ) ;
							
							// recorre los numeros de meses
							for( int iMonth = 1 ; iMonth <= numberOfMonths ; iMonth++ )
							{
								// toma el mes en parametro
								String mesParam = request.getParameter( "Inp-Adq-" + prodElegido.getCveProducto( ) + "-" + iMonth ) ;
								
								// conveirte en numero
								int mesTotal = 0 ;
                                                                long rev = 0 ;
								
								try
								{
									mesTotal = Integer.parseInt( mesParam ) ;
								}catch( Exception e )
								{
									
								}
								
								// agrega a adqw
								adqw.setMes( iMonth , mesTotal ) ;
							}
							
							// agrega
							this.cpaw.add( adqw ) ;
						}
					}
					// en caso de que no est[e elegido el todos los productos
					else
					{
						// recorre los productos
						for( int prod : producto )
						{
							// por cada producto llena un CampaniaProductoAdqWraper
							CampaniaProductoAdqWraper adqw = new CampaniaProductoAdqWraper( numberOfMonths , prod ) ;
							
							// recorre los numeros de meses
							for( int iMonth = 1 ; iMonth <= numberOfMonths ; iMonth++ )
							{
								// toma el mes en parametro
								String mesParam = request.getParameter( "Inp-Adq-" + prod + "-" + iMonth ) ;
								
								// conveirte en numero
								int mesTotal = 0 ;
                                                                long rev = 0 ;
								
								try
								{
									mesTotal = Integer.parseInt( mesParam ) ;
								}catch( Exception e )
								{
									
								}
								
								// agrega a adqw
								adqw.setMes( iMonth , mesTotal ) ;
							}
							
							// agrega
							this.cpaw.add( adqw ) ;
						}
					}
				}
			}// fin del else de que si existen los productos
                        }	
		}
                //}
                MasterCardDAO.closeEntityManager( ) ;
		return errors ;
	}
	
	public List< AssetPaqueteWraper > getDiferentAsset( )
	{
		// genera el resultado
		List< AssetPaqueteWraper > res = new ArrayList< AssetPaqueteWraper >( ) ;
                                
		// recorre los paquetes
		// en caso de que sea diferente de null
		if( paquetesParaCampana != null )
			for( TblCuentaPaquete tcp : paquetesParaCampana )
			{
				// toma el asset
				TblAsset ass = tcp.getTblPaquete( ).getTblAsset( ) ;                                
                                
                                                                
				// revisa que no exista
				boolean existe = false ;
				
				AssetPaqueteWraper elem = null ;
				
				for( AssetPaqueteWraper asset : res )
				{
					// en caso de que coincidan los assets
					if( asset.verifyAsset( ass ) )
					{
						// cambia bandera
						existe = true ;
						
						elem = asset ;
						
						// rompe ciclo
						break ;
					}
                                        
				}
				
				// en caso de que no exist
				if( ! existe ){
					// agrega
					res.add( new AssetPaqueteWraper( ass ) ) ;
                                        
                                }
				// en caso de que exista
                                else{
					elem.increment( ) ;
                                }                                
			}
		
		// regresa los asset
		return res ;
	}			
        
	public void setFechaFinA(int[] tipoProducto) {
		this.tipoProducto = tipoProducto;
	}

	public List<CampaniaProductoWraper> getCpw() {
		return cpw;
	}

	public List< CampaniaProductoAdqWraper > getCpaw() {
		return cpaw ;
	}
        
        List< AssetPaqueteWraper > ress = getDiferentAsset( ) ;
        int i = 0 ;

    public int getTfIni() {
        return tfIni;
    }

    public void setTfIni(int tfIni) {
        this.tfIni = tfIni;
    }

    public String getMaxFecIniAss() {
        return maxFecIniAss;
    }

    public void setMaxFecIniAss(String maxFecIniAss) {
        this.maxFecIniAss = maxFecIniAss;
    }
    
//    public String[] getFechaFinAsset() {
//            return fechaFinAsset;
//        }
//        
//        public String getFechaFinAsset0( )
//	{
//		return fechaFinAsset[ 0 ] ;
//	}
//	
//	public void setFechaFinAsset0( String val )
//	{
//		this.fechaFinAsset[ 0 ] = val ;
//	}
//        
//        public String getFechaFinAsset1( )
//	{
//		return fechaFinAsset[ 1 ] ;
//	}
//	
//	public void setFechaFinAsset1( String val )
//	{
//		this.fechaFinAsset[ 1 ] = val ;
//	}
//        public String getFechaFinAsset2( )
//	{
//		return fechaFinAsset[ 2 ] ;
//	}
//	
//	public void setFechaFinAsset2( String val )
//	{
//		this.fechaFinAsset[ 2 ] = val ;
//	}
//        public String getFechaFinAsset3( )
//	{
//		return fechaFinAsset[ 3 ] ;
//	}
//	
//	public void setFechaFinAsset3( String val )
//	{
//		this.fechaFinAsset[ 3 ] = val ;
//	}
//        public String getFechaFinAsset4( )
//	{
//		return fechaFinAsset[ 4 ] ;
//	}
//	
//	public void setFechaFinAsset4( String val )
//	{
//		this.fechaFinAsset[ 4 ] = val ;
//	}
//        public String getFechaFinAsset5( )
//	{
//		return fechaFinAsset[ 5 ] ;
//	}
//	
//	public void setFechaFinAsset5( String val )
//	{
//		this.fechaFinAsset[ 5 ] = val ;
//	}
//        public String getFechaFinAsset6( )
//	{
//		return fechaFinAsset[ 6 ] ;
//	}
//	
//	public void setFechaFinAsset6( String val )
//	{
//		this.fechaFinAsset[ 6 ] = val ;
//	}
//        public String getFechaFinAsset7( )
//	{
//		return fechaFinAsset[ 7 ] ;
//	}
//	
//	public void setFechaFinAsset7( String val )
//	{
//		this.fechaFinAsset[ 7 ] = val ;
//	}
//        public String getFechaFinAsset8( )
//	{
//		return fechaFinAsset[ 8 ] ;
//	}
//	
//	public void setFechaFinAsset8( String val )
//	{
//		this.fechaFinAsset[ 8 ] = val ;
//	}
//        public String getFechaFinAsset9( )
//	{
//		return fechaFinAsset[ 9 ] ;
//	}
//	
//	public void setFechaFinAsset9( String val )
//	{
//		this.fechaFinAsset[ 9 ] = val ;
//	}
//        public String getFechaFinAsset10( )
//	{
//		return fechaFinAsset[ 10 ] ;
//	}
//	
//	public void setFechaFinAsset10( String val )
//	{
//		this.fechaFinAsset[ 10 ] = val ;
//	}
//	public String getFechaFinAsset11( )
//	{
//		return fechaFinAsset[ 11 ] ;
//	}
//	
//	public void setFechaFinAsset11( String val )
//	{
//		this.fechaFinAsset[ 11 ] = val ;
//	}
//        public String getFechaFinAsset12( )
//	{
//		return fechaFinAsset[ 12 ] ;
//	}
//	
//	public void setFechaFinAsset12( String val )
//	{
//		this.fechaFinAsset[ 12 ] = val ;
//	}
//        public String getFechaFinAsset13( )
//	{
//		return fechaFinAsset[ 13 ] ;
//	}
//	
//	public void setFechaFinAsset13( String val )
//	{
//		this.fechaFinAsset[ 13 ] = val ;
//	}
//        public String getFechaFinAsset14( )
//	{
//		return fechaFinAsset[ 14 ] ;
//	}
//	
//	public void setFechaFinAsset14( String val )
//	{
//		this.fechaFinAsset[ 14 ] = val ;
//	}
//        public String getFechaFinAsset15( )
//	{
//		return fechaFinAsset[ 15 ] ;
//	}
//	
//	public void setFechaFinAsset15( String val )
//	{
//		this.fechaFinAsset[ 15 ] = val ;
//	}
//        public String getFechaFinAsset16( )
//	{
//		return fechaFinAsset[ 16 ] ;
//	}
//	
//	public void setFechaFinAsset16( String val )
//	{
//		this.fechaFinAsset[ 16 ] = val ;
//	}
//        public String getFechaFinAsset17( )
//	{
//		return fechaFinAsset[ 17 ] ;
//	}
//	
//	public void setFechaFinAsset17( String val )
//	{
//		this.fechaFinAsset[ 17 ] = val ;
//	}
//        public String getFechaFinAsset18( )
//	{
//		return fechaFinAsset[ 18 ] ;
//	}
//	
//	public void setFechaFinAsset18( String val )
//	{
//		this.fechaFinAsset[ 18 ] = val ;
//	}
//        public String getFechaFinAsset19( )
//	{
//		return fechaFinAsset[ 119 ] ;
//	}
//	
//	public void setFechaFinAsset19( String val )
//	{
//		this.fechaFinAsset[ 19 ] = val ;
//	}
//        public String getFechaFinAsset20( )
//	{
//		return fechaFinAsset[ 20 ] ;
//	}
//	
//	public void setFechaFinAsset20( String val )
//	{
//		this.fechaFinAsset[ 20 ] = val ;
//	}
//        public String getFechaFinAsset21( )
//	{
//		return fechaFinAsset[ 21 ] ;
//	}
//	
//	public void setFechaFinAsset21( String val )
//	{
//		this.fechaFinAsset[ 21 ] = val ;
//	}
//        public String getFechaFinAsset22( )
//	{
//		return fechaFinAsset[ 22 ] ;
//	}
//	
//	public void setFechaFinAsset22( String val )
//	{
//		this.fechaFinAsset[ 22 ] = val ;
//	}
//        public String getFechaFinAsset23( )
//	{
//		return fechaFinAsset[ 23 ] ;
//	}
//	
//	public void setFechaFinAsset23( String val )
//	{
//		this.fechaFinAsset[ 23 ] = val ;
//	}
//        public String getFechaFinAsset24( )
//	{
//		return fechaFinAsset[ 24 ] ;
//	}
//	
//	public void setFechaFinAsset24( String val )
//	{
//		this.fechaFinAsset[ 24 ] = val ;
//	}
//        public String getFechaFinAsset25( )
//	{
//		return fechaFinAsset[ 25 ] ;
//	}
//	
//	public void setFechaFinAsset25( String val )
//	{
//		this.fechaFinAsset[ 25 ] = val ;
//	}
//        public String getFechaFinAsset26( )
//	{
//		return fechaFinAsset[ 26 ] ;
//	}
//	
//	public void setFechaFinAsset26( String val )
//	{
//		this.fechaFinAsset[ 26 ] = val ;
//	}
//        public String getFechaFinAsset27( )
//	{
//		return fechaFinAsset[ 27 ] ;
//	}
//	
//	public void setFechaFinAsset27( String val )
//	{
//		this.fechaFinAsset[ 27 ] = val ;
//	}
//        public String getFechaFinAsset28( )
//	{
//		return fechaFinAsset[ 28 ] ;
//	}
//	
//	public void setFechaFinAsset28( String val )
//	{
//		this.fechaFinAsset[ 28 ] = val ;
//	}
//        public String getFechaFinAsset29( )
//	{
//		return fechaFinAsset[ 29 ] ;
//	}
//	
//	public void setFechaFinAsset29( String val )
//	{
//		this.fechaFinAsset[ 29 ] = val ;
//	}
//       // Bean fecha fin de asset
//       public String[] getFIa() {
//            return fIa;
//        }
//        
//        public String getFIa0( )
//	{
//		return fIa[ 0 ] ;
//	}
//	
//	public void setFIa0( String val )
//	{
//		this.fIa[ 0 ] = val ;
//	}
//        
//        public String getFIa1( )
//	{
//		return fIa[ 1 ] ;
//	}
//	
//	public void setFIa1( String val )
//	{
//		this.fIa[ 1 ] = val ;
//	}
//        public String getFIa2( )
//	{
//		return fIa[ 2 ] ;
//	}
//	
//	public void setFIa2( String val )
//	{
//		this.fIa[ 2 ] = val ;
//	}
//        public String getFIa3( )
//	{
//		return fIa[ 3 ] ;
//	}
//	
//	public void setFIa3( String val )
//	{
//		this.fIa[ 3 ] = val ;
//	}
//        public String getFIa4( )
//	{
//		return fIa[ 4 ] ;
//	}
//	
//	public void setFIa4( String val )
//	{
//		this.fIa[ 4 ] = val ;
//	}
//        public String getFIa5( )
//	{
//		return fIa[ 5 ] ;
//	}
//	
//	public void setFIa5( String val )
//	{
//		this.fIa[ 5 ] = val ;
//	}
//        public String getFIa6( )
//	{
//		return fIa[ 6 ] ;
//	}
//	
//	public void setFIa6( String val )
//	{
//		this.fIa[ 6 ] = val ;
//	}
//        public String getFIa7( )
//	{
//		return fIa[ 7 ] ;
//	}
//	
//	public void setFIa7( String val )
//	{
//		this.fIa[ 7 ] = val ;
//	}
//        public String getFIa8( )
//	{
//		return fIa[ 8 ] ;
//	}
//	
//	public void setFIa8( String val )
//	{
//		this.fIa[ 8 ] = val ;
//	}
//        public String getFIa9( )
//	{
//		return fIa[ 9 ] ;
//	}
//	
//	public void setFIa9( String val )
//	{
//		this.fIa[ 9 ] = val ;
//	}
//        public String getFIa10( )
//	{
//		return fIa[ 10 ] ;
//	}
//	
//	public void setFIa10( String val )
//	{
//		this.fIa[ 10 ] = val ;
//	}
//	public String getFIa11( )
//	{
//		return fIa[ 11 ] ;
//	}
//	
//	public void setFIa11( String val )
//	{
//		this.fIa[ 11 ] = val ;
//	}
//        public String getFIa12( )
//	{
//		return fIa[ 12 ] ;
//	}
//	
//	public void setFIa12( String val )
//	{
//		this.fIa[ 12 ] = val ;
//	}
//        public String getFIa13( )
//	{
//		return fIa[ 13 ] ;
//	}
//	
//	public void setFIa13( String val )
//	{
//		this.fIa[ 13 ] = val ;
//	}
//        public String getFIa14( )
//	{
//		return fIa[ 14 ] ;
//	}
//	
//	public void setFIa14( String val )
//	{
//		this.fIa[ 14 ] = val ;
//	}
//        public String getFIa15( )
//	{
//		return fIa[ 15 ] ;
//	}
//	
//	public void setFIa15( String val )
//	{
//		this.fIa[ 15 ] = val ;
//	}
//        public String getFIa16( )
//	{
//		return fIa[ 16 ] ;
//	}
//	
//	public void setFIa16( String val )
//	{
//		this.fIa[ 16 ] = val ;
//	}
//        public String getFIa17( )
//	{
//		return fIa[ 17 ] ;
//	}
//	
//	public void setFIa17( String val )
//	{
//		this.fIa[ 17 ] = val ;
//	}
//        public String getFIa18( )
//	{
//		return fIa[ 18 ] ;
//	}
//	
//	public void setFIa18( String val )
//	{
//		this.fIa[ 18 ] = val ;
//	}
//        public String getFIa19( )
//	{
//		return fIa[ 119 ] ;
//	}
//	
//	public void setFIa19( String val )
//	{
//		this.fIa[ 19 ] = val ;
//	}
//        public String getFIa20( )
//	{
//		return fIa[ 20 ] ;
//	}
//	
//	public void setFIa20( String val )
//	{
//		this.fIa[ 20 ] = val ;
//	}
//        public String getFIa21( )
//	{
//		return fIa[ 21 ] ;
//	}
//	
//	public void setFIa21( String val )
//	{
//		this.fIa[ 21 ] = val ;
//	}
//        public String getFIa22( )
//	{
//		return fIa[ 22 ] ;
//	}
//	
//	public void setFIa22( String val )
//	{
//		this.fIa[ 22 ] = val ;
//	}
//        public String getFIa23( )
//	{
//		return fIa[ 23 ] ;
//	}
//	
//	public void setFIa23( String val )
//	{
//		this.fIa[ 23 ] = val ;
//	}
//        public String getFIa24( )
//	{
//		return fIa[ 24 ] ;
//	}
//	
//	public void setFIa24( String val )
//	{
//		this.fIa[ 24 ] = val ;
//	}
//        public String getFIa25( )
//	{
//		return fIa[ 25 ] ;
//	}
//	
//	public void setFIa25( String val )
//	{
//		this.fIa[ 25 ] = val ;
//	}
//        public String getFIa26( )
//	{
//		return fIa[ 26 ] ;
//	}
//	
//	public void setFIa26( String val )
//	{
//		this.fIa[ 26 ] = val ;
//	}
//        public String getFIa27( )
//	{
//		return fIa[ 27 ] ;
//	}
//	
//	public void setFIa27( String val )
//	{
//		this.fIa[ 27 ] = val ;
//	}
//        public String getFIa28( )
//	{
//		return fIa[ 28 ] ;
//	}
//	
//	public void setFIa28( String val )
//	{
//		this.fIa[ 28 ] = val ;
//	}
//        public String getFIa29( )
//	{
//		return fIa[ 29 ] ;
//	}
//	
//	public void setFIa29( String val )
//	{
//		this.fIa[ 29 ] = val ;
//	}

    /**
     * @return the encargado
     */
    public int getEncargado() {
        return encargado;
    }

    /**
     * @param encargado the encargado to set
     */
    public void setEncargado(int encargado) {
        this.encargado = encargado;
    }

    /**
     * @param dcInt the dcInt to set
     */
    public void setDcInt(int dcInt) {
        this.dcInt = dcInt;
    }

    /**
     * @return the DuraCamp
     */
    public String[] getDuraCamp() {
        return duraCamp;
    }

    /**
     * @param DuraCamp the DuraCamp to set
     */
    public void setDuraCamp(String[] duraCamp) {
        this.duraCamp = duraCamp;
    }

    public String getDuraCamp0( )
	{
		return duraCamp[ 0 ] ;
	}
	
	public void setDuraCamp0( String val )
	{
		this.duraCamp[ 0 ] = val ;
	}
        
        public String getDuraCamp1( )
	{
		return duraCamp[ 1 ] ;
	}
	
	public void setDuraCamp1( String val )
	{
		this.duraCamp[ 1 ] = val ;
	}
        public String getDuraCamp2( )
	{
		return duraCamp[ 2 ] ;
	}
	
	public void setDuraCamp2( String val )
	{
		this.duraCamp[ 2 ] = val ;
	}
        public String getDuraCamp3( )
	{
		return duraCamp[ 3 ] ;
	}
	
	public void setDuraCamp3( String val )
	{
		this.duraCamp[ 3 ] = val ;
	}
        public String getDuraCamp4( )
	{
		return duraCamp[ 4 ] ;
	}
	
	public void setDuraCamp4( String val )
	{
		this.duraCamp[ 4 ] = val ;
	}
        public String getDuraCamp5( )
	{
		return duraCamp[ 5 ] ;
	}
	
	public void setDuraCamp5( String val )
	{
		this.duraCamp[ 5 ] = val ;
	}
        public String getDuraCamp6( )
	{
		return duraCamp[ 6 ] ;
	}
	
	public void setDuraCamp6( String val )
	{
		this.duraCamp[ 6 ] = val ;
	}
        public String getDuraCamp7( )
	{
		return duraCamp[ 7 ] ;
	}
	
	public void setDuraCamp7( String val )
	{
		this.duraCamp[ 7 ] = val ;
	}
        public String getDuraCamp8( )
	{
		return duraCamp[ 8 ] ;
	}
	
	public void setDuraCamp8( String val )
	{
		this.duraCamp[ 8 ] = val ;
	}
        public String getDuraCamp9( )
	{
		return duraCamp[ 9 ] ;
	}
	
	public void setDuraCamp9( String val )
	{
		this.duraCamp[ 9 ] = val ;
	}
        public String getDuraCamp10( )
	{
		return duraCamp[ 10 ] ;
	}
	
	public void setDuraCamp10( String val )
	{
		this.duraCamp[ 10 ] = val ;
	}
	public String getDuraCamp11( )
	{
		return duraCamp[ 11 ] ;
	}
	
	public void setDuraCamp11( String val )
	{
		this.duraCamp[ 11 ] = val ;
	}
        public String getDuraCamp12( )
	{
		return duraCamp[ 12 ] ;
	}
	
	public void setDuraCamp12( String val )
	{
		this.duraCamp[ 12 ] = val ;
	}
        public String getDuraCamp13( )
	{
		return duraCamp[ 13 ] ;
	}
	
	public void setDuraCamp13( String val )
	{
		this.duraCamp[ 13 ] = val ;
	}
        public String getDuraCamp14( )
	{
		return duraCamp[ 14 ] ;
	}
	
	public void setDuraCamp14( String val )
	{
		this.duraCamp[ 14 ] = val ;
	}
        public String getDuraCamp15( )
	{
		return duraCamp[ 15 ] ;
	}
	
	public void setDuraCamp15( String val )
	{
		this.duraCamp[ 15 ] = val ;
	}
        public String getDuraCamp16( )
	{
		return duraCamp[ 16 ] ;
	}
	
	public void setDuraCamp16( String val )
	{
		this.duraCamp[ 16 ] = val ;
	}
        public String getDuraCamp17( )
	{
		return duraCamp[ 17 ] ;
	}
	
	public void setDuraCamp17( String val )
	{
		this.duraCamp[ 17 ] = val ;
	}
        public String getDuraCamp18( )
	{
		return duraCamp[ 18 ] ;
	}
	
	public void setDuraCamp18( String val )
	{
		this.duraCamp[ 18 ] = val ;
	}
        public String getDuraCamp19( )
	{
		return duraCamp[ 19 ] ;
	}
	
	public void setDuraCamp19( String val )
	{
		this.duraCamp[ 19 ] = val ;
	}
    
    public boolean getEstrategica() {
        return estrategica;
    }

    public void setEstrategica(boolean estrategica) {
        this.estrategica = estrategica;
    }
    
    public List< TblDomestic > getTblDomestic() {
        return tblDomestic;
    }

    public void setTblDomestic(List< TblDomestic > tblDomestic) {
        this.tblDomestic = tblDomestic;
    }

    public int getDuCa() {
        return duCa;
    }

    public void setDuCa(int duCa) {
        this.duCa = duCa;
    }
    
    public float getCtp() {
        return ctp;
    }

    public void setCtp(float ctp) {
        this.ctp = ctp;
    }

    public String getComentarios() {
        return comentarios;
    }

    public void setComentarios(String comentarios) {
        this.comentarios = comentarios;
    }

    public java.math.BigDecimal getRoi() {
        return roi;
    }

    public void setRoi(java.math.BigDecimal roi) {
        this.roi = roi;
    }

    /**
     * @return the gdv
     */
    public java.math.BigDecimal getGdv() {
        return gdv;
    }

    /**
     * @param gdv the gdv to set
     */
    public void setGdv(java.math.BigDecimal gdv) {
        this.gdv = gdv;
    }

    /**
     * @return the campaniaProductoAdq
     */
    public List<CampaniaProductoAdq> getCampaniaProductoAdq() {
        return campaniaProductoAdq;
    }

    /**
     * @param campaniaProductoAdq the campaniaProductoAdq to set
     */
    public void setCampaniaProductoAdq(List<CampaniaProductoAdq> campaniaProductoAdq) {
        this.campaniaProductoAdq = campaniaProductoAdq;
    }

    /**
     * @return the totalTN
     */
    public int getTotalTN() {
        return totalTN;
    }

    /**
     * @param totalTN the totalTN to set
     */
    public void setTotalTN(int totalTN) {
        this.totalTN = totalTN;
    }

    /**
     * @return the revenue
     */
    public java.math.BigDecimal getRevT() {
        return revT;
    }

    /**
     * @param revenue the revenue to set
     */
    public void setRevT(java.math.BigDecimal revT) {
        this.revT = revT;
    }

    /**
     * @return the inversion
     */
    public String getInversion() {
        return inversion;
    }

    /**
     * @param inversion the inversion to set
     */
    public void setInversion(String inversion) {
        this.inversion = inversion;
    }

    /**
     * @return the proposito
     */
    public String getProposito() {
        return proposito;
    }

    /**
     * @param proposito the proposito to set
     */
    public void setProposito(String proposito) {
        this.proposito = proposito;
    }

    /**
     * @return the lBT
     */
    public List< BasicToolTO > getlBT() {
        return lBT;
    }

    /**
     * @param lBT the lBT to set
     */
    public void setlBT(List< BasicToolTO > lBT) {
        this.lBT = lBT;
    }

    /**
     * @return the cardsCampain
     */
    public int getCardsCampain() {
        return cardsCampain;
    }

    /**
     * @param cardsCampain the cardsCampain to set
     */
    public void setCardsCampain(int cardsCampain) {
        this.cardsCampain = cardsCampain;
    }
    
}
